home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Night Owl 6
/
Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso
/
008a
/
acd114.zip
/
ACD.DOC
< prev
next >
Wrap
Text File
|
1991-10-20
|
33KB
|
750 lines
┌──────────────────────────────────────────────────────────────────────────┐
│Documentation of ACD version 1.14, dated Oct. 20, 1991 (c) A. Merckens │
└──────────────────────────────────────────────────────────────────────────┘
First, before giving some documentation on ACD, I'll give some background
information on WHY I created yet Another Change Directory program.
┌─────────────────────────────┐
│ What I liked about ..... │
└─────────────────────────────┘
NCD [Norton Change Directory - (c) Peter Norton]
───
- first program that made "fast" changing directories possible
- nice best guess when pathname is incorrectly spelled
- possible to remove "current" directory [NCD RD .]
- `speed search' when window with directory information appears on screen
- possible to rename a directory
LCD [Led's Change Directory - (c) Keith Ledbetter]
───
- directory information on more than one drive at a time
- change to correctly specified directory EVEN if not in directory
database
- fast
┌─────────────────────────────┐
│ What I disliked about ... │
└─────────────────────────────┘
NCD
───
- only directory-information on one drive at a time
- directories are unsorted
- updates are unsorted [NCD MD dirname]
- messages that are driving me crazy when switching to a correctly
specified path [NCD d:\bin\dos40; I know, I know, I should have
specified NCD CD d:\bin\dos40]
- unwanted updates of directory-information when NCD encounters an unknown
directory
- cannot write directory-information for network-drives
- slow
- cannot rename a directory on a network drive
LCD
───
- directories are unsorted
- updates are unsorted [LCD MD dirname], even worse than NCD
- pop-up window is too small when selecting from many directories
- not possible to remove "current" directory [LCD RD . ]
- not possible to explicitly give a drive name, e.g. LCD d:bi is not
allowed
- strange "BEST GUESS" when partial directory name could not be found
- not DV-aware
- if EGA/VGA 43/50 lines/page: on exit, the cursor is positioned at the
wrong line
- not possible to remove directory-information (locally), without actually
removing directories: when network drives are scanned, quite often users
have the same directory names (consider: UTILS); however, you may not be
interested in these, and wish to remove `useless' directory-information
- no `speed search' when pop-up window with directory information on screen
[Well, in version LCD 4.0 - 10 days after first release of ACD 1.00 -
Mr. Ledbetter implemented this in the same way as ACD....]
So, I created Another Change Directory, which is, in my prejudiced opinion,
the best of these two worlds.
About the program ACD
ACD is a program designed to have all the features I liked in LCD and NCD,
and also to have the features I thought were missing in these programs. Just
like LCD, ACD makes changing directories much easier, especially when you have
a large harddisk with lots of different partitions or are hooked on a network
drive.
ACD works "across all drives" by maintaining the directory database of ALL
drives in the file C:\ACD.IDX (by default). This means that you don't have to
specify a drive letter when changing to a directory on a different drive.
However, you are allowed to specify the drive letter which will be used
to consider only the directories on the drive specified.
The syntax:
ACD [drive:]partial_dir[\] [/i][/c]: change to a directory or present selection
ACD ![drive:]partial_dir [/i] : use scrollback history to change directory
ACD rd directory_name : delete directory; update database
ACD md directory_name : create directory; update database
ACD rd directory_name /local : delete directory-information recursively
below directory_name from database; do not
actually delete directories
ACD md directory_name /local : create directory-information; do not
actually create directory
ACD ren dir1 dir2 : rename dir1 to dir2; update database
ACD /create <drivelist> : scan drives and create directory database
ACD /qcreate <drivelist> : scan drives (ignore dirs with extensions)
and create directory database
ACD /add <drivelist> : scan drives and add to directory database;
existing info on a drive will be replaced
ACD /qadd <drivelist> : scan drives (ignore dirs with extensions)
and add to directory database
ACD /?, or ACD /h : short help
Changing directories:
ACD is used to switch quickly between directories across any drive. You
simply invoke ACD and give it the full or partial name of the directory you
wish to change to. For example, if you have a directory named D:\COMM\KERMIT
you could switch to this directory with the command:
C:\> ACD ker
ACD will first try to do an immediate change to the directory name that you
specify. If that change works, ACD simply exits immediately. If it fails,
then ACD looks into your directory database and tries to figure out the
directory name that you wanted. If more than one directory existed with the
same partial name that you gave to ACD, it will display a pop-up window on
the screen containing all of the matches found. Simply use the movement
keys (PgUp, PgDn, Home, End, Arrow keys) to highlight the directory that you
want to change to, then hit <Enter>.
If the `current directory' is included in the partial match set, the
highlight is positioned on this directory (sort of like "you are here"),
otherwise, the highlight is positioned on the first match.
Within the pop-up window, a `speed search' is available, i.e. when you
press a key which doesn't have a special function (see below), then the
character is added to the `partial name' you entered at the command-line,
the pop-up window will possibly resized and the new selections will be
shown if more than one directory exists with the same partial name: as soon
as exactly one directory is selected by speed search, the directory will be
selected without further confirmation.
By pressing * the method of partial name search is toggled. Normally, ACD
matches the partial name at the start of the last part of the directory.
When pressing * once, it will match the partial name anywhere in the last
part of the directory (see example below). If you press * again, the first
method is used again.
If you press \, then all subdirectories of the current selection are shown
as well; if you press \ again, the previous state is restored.
If you press ESC, the operation will be aborted.
The + key makes the highlighted line point to the next drive in the
selection window, and the Tab makes the highlighted line point to the next
directory with the same parents as the currently highlighted line.
By pressing <ALT>C simultaneously, the highlighted path will be centered on
the screen, allowing you to see the directories above and below the
highlighted path.
Summary on the action of keys when in pop-up window:
F1 : gives help on the special keys
Pg-Up : go to top of page, or go one page up
Pg-Dn : go to bottom of page, or go one page down
End : go to last entry
Home : go to first entry
Arrow-Up : go to previous entry
Arrow-Dn : go to next entry
Tab : go to next entry with the same `parent'
BackTab : go to previous entry with the same `parent'
ALT-C : center highlighted path on screen
+ : go to first entry of next drive
* : toggle search method
\ or / : toggle display of all subdirectories of current selection
Enter : switch to highlighted entry
Esc : abort operation
BS, Del : delete character from partial name for `speed search'
: : select all drives instead of the one specified
other char.: add character to partial name for `speed search'
Example:
C:\> ACD do
If this selects more than one directory, a pop-up window will be show on the
screen:
┌─────────────────────────────[F1 help]────────────────[1/2]────────┐
│ c:\bin\dos40 │
│ d:\doreen │
└──────────────────────────────────────────────────────[do ]─┘
In this case, two directories are selected. By using the arrow-keys and the
<Enter>, or by pressing the next character (r or s), a selection can be made.
By pressing the *, you will `toggle' the method of string-searching, and
you'll get a pop-up window equal to the command:
ACD *do
So, for example:
┌─────────────────────────────[F1 help]────────────────[1/4]────────┐
│ c:\4dos │
│ c:\bin\dos40 │
│ d:\doreen │
│ g:\utils\seldom │
└──────────────────────────────────────────────────── *[do ]─┘
By entering * again, the first screen will be shown again.
When you press \, you may get the following screen:
┌─────────────────────────────[F1 help]────────────────[1/6]────────┐
│ c:\4dos │
│ c:\bin\dos40 │
│ d:\doreen │
│ d:\doreen\goodies │
│ d:\doreen\oldies │
│ g:\utils\seldom │
└──────────────────────────────────────────────────── *[do*\ ]─┘
By entering \ again, you will get the previous screen again.
You can specify from the commandline which search method has to be used,
and/or if all subdirectories of the selection have to be shown by starting
with a star ("*") and finishing wish a slash ("\").
Note that as soon as exactly one directory is selected by Speed Search, the
directory is selected, without further confirmation.
By default, all drives that are mentioned in the pop-up window are tested
for their existence. This ensures that only directory information of the
active drives is displayed. If you don't like this, or if testing your
drives is S L O W then you may add the /i option. ACD will then display
also the information of the (possibly) non-active drives. If you would like
to make this the default, then you could patch ACD (described at the end).
If you KNOW you wish to change to a directory on the default drive, you
may specify
ACD dir /c
which will only show you the matching directories on the current drive; If
you KNOW you wish to change to a directory on the E-drive (for example),
then you may specify
ACD E:dir /c
which will only show the matching directories on the E-drive. If a
selection is shown, and you change your mind about the drive specification,
then you may press : which will result in showing the matching directories
based on all drives, as if you did not include E: or the /c option from the
command-line.
Scrollback history:
Each time you change to a directory using ACD and using information in the
ACD-database, information is written to the ACD-database to remember the
directory you just changed to. By default the scrollback history will
remember up to 20 directories. Since ACD now writes each time it is used to
change to a directory, the performance on a XT might be slow. If you don't
want to use the scrollback history function for this or another reason, you
may change the history size to zero. See "Limitations and other features "
at the end of this document how to proceed.
When you changed to a few directories and wish to return to one of them,
you may enter:
ACD !
Now a pop-up window will appear which will show the directories you have
changed to.
Once again, you can use speedsearch or the keys mentioned above to make a
selection. You may also call speedsearch from the commandline, by
specifying, for example:
ACD !do
which will present a partial match set using ONLY the last "historysize"
(=20) directories you changed to. The first entry on screen is the last
directory you changed to, etc.
The scrollback history is destroyed when you enter CD /add [drive], or CD
/scan [drive].
Note that if you change to a directory directly - i.e. ACD does not have to
use information from its database - ACD does not add information to the
scrollback history. So, for example, if the directory C:\DOS40 exists, and
you enter:
ACD C:\DOS40
then this information is not added to the scrollback history. However, in
this case, if you would have entered
ACD DOS
and selected C:\DOS40, then the information WOULD be added.
Scanning directories:
The first time you execute ACD, you must specify the /CREATE parameter
("ACD /create") which instructs ACD to scan all of your hard drives and
create a file called ACD.IDX in the root directory of drive C. Depending on
how you will create/remove your directories in the near future, it may be
necessary to periodically rescan your drives.
If you only want ACD to know about certain specific drives (for example:
only non-network drives), you can specify a drive list after the /CREATE
keyword. To have ACD only scan drives C, E, and G, just enter:
C:\> ACD /CREATE CEG
If at any stage, you wish to add information about another drive, say drive
F, then you could enter:
C:\> ACD /ADD F
If you are sure that you don't have subdirectories which have an extension
in their name (for example, C:\PROGRAMS.OLD\) then you can specify
/QCREATE, (/QADD), instead of /CREATE (/ADD). This causes ACD to scan
approximately 33% quicker than without the Q.
Starting from version 1.03: if you ADD a drive for which already
information is stored in the directory database, this information will be
replaced by new information at the end of the information database, so no
redundant information will be stored.
Direct database updating:
You can also use ACD to create, remove and rename directories with
immediate database updating. This means that you don't have to rescan your
drives to update the directory database. ACD will create, delete or rename
the directory specified, and then update the ACD.IDX database at the same
time. For example, to create a directory on drive F: and put that directory
in the database, you'd do:
C:\> ACD md f:\temp
This ability comes in especially handy for users of command shells that
allow aliasing, such as CED and 4DOS. With these utilities, you can change
the standard MD and RD commands to invoke ACD instead. With 4DOS, you could
set up the aliases like below in a file called, say, C:\ALIASES
md ACD md %&
mkdir md
rd ACD rd %&
rmdir rd
cd ACD %&
rendir ACD ren %&
ACD <drive:\dir>ACD.EXE
Now you can give in 4DOS the command
alias /r c:\aliases
Note: the last line - ACD <drive:\dir>ACD.EXE - is not necessary if ACD.EXE
is in your search PATH; however, a program which has just a simple task -
in this case `change directory' - executes much faster if the PATH does not
have to be searched.
Another suggestion: if you have defined an alias for CD and wish to change
to the previous directory, enter CD.. (without space) instead of CD ..
(with space), since in the first case ACD will not be called to execute
this very simple task and consequently no loading of the program has to
take place, and thus changing to the previous directory will go faster
(especially noticeable on an XT), with less typing.
Local database updating:
You can also use ACD to create and remove directory information only by
using the /local switch. ACD will NOT create or delete the directory
specified, but only update the ACD.IDX database.
For example, to remove the information on a directory and its
subdirectories on drive G:
C:\> ACD rd G:\users\mally /local
Then all information about g:\users\mally is deleted from the database, and
all of its subdirectories. This is especially handy for users of network
drives, who do not want to this information in their database.
Also, you can add local directory information to the database. Eg. if the
directory c:\bin\testcase is missing in the database info, but you wish to
include it, you can update the database with this database information
without rescanning:
C:\> ACD md c:\bin\testcase /local
Note however that in order for ACD to update the database, the directory
c:\bin (the parent) should exist.
Renaming directories:
You can also use ACD to give a directory another name. ACD will directly
rename the directory and update the ACD-database. Directories can only be
renamed if the parents of the directory to be renamed are the same as the
parents of the new directory specification. For example:
ACD ren c:\bin\dos c:\bin\olddos
is allowed, whereas
ACD ren c:\bin\dos c:\olddos
is not allowed, since they have different parents. You can also rename the
current directory by specifying
ACD ren . olddos
The ACD and ACD_color environment variables
If you'd rather have ACD keep its ACD.IDX database another place than the
root directory of drive C:, you can specify the filename you want in the
environment variable named ACD. For example, if you'd like to keep the
ACD.IDX file on drive D: in your UTILS directory, you would put
SET ACD=D:\UTILS\ACD.IDX
in your AUTOEXEC.BAT file.
You can change the colors of the pop-up window. You do this by setting an
environment variable named "ACD_COLOR":
Set ACD_Color = backgroundcolor foregroundcolor
The colors can be chosen from the table below (default is: 0 7)
Dark Colors ║
(Foreground & ║ Light Colors
Background) ║ (Foreground)
═══════════╤════╬══════════════╤════
Black │ 0 ║ DarkGray │ 8
Blue │ 1 ║ LightBlue │ 9
Green │ 2 ║ LightGreen │ 10
Cyan │ 3 ║ LightCyan │ 11
Red │ 4 ║ LightRed │ 12
Magenta │ 5 ║ LightMagenta │ 13
Brown │ 6 ║ Yellow │ 14
LightGray │ 7 ║ White │ 15
Example:
Set ACD_Color = 2 4
Would give you red characters in a green window. The default, lightgray
characters on black background works nicely on a monochrome monitor.
Some more examples:
ACD rd . : Remove current directory
ACD rd . /local : Remove information only on current directory
ACD cd .... : Just like in 4DOS: go 3 directories back;
ACD d:* : Show all paths in the database on drive D
ACD s* : Find all paths that start with s; equal to ACD s.
ACD s\ : Find all paths that start with s and show all its
subdirectories
ACD *in : Find all paths that have the word "in" in them.
ACD * : Show all paths in the database.
ACD ** : Show all paths in the database, and use different Speed
Search method.
ACD !s : Find all paths in the scrollback history that start with
an s.
Limitations and other features:
. The ACD-database can have a maximum size of approximately 64K bytes. One
directory entry takes room for at least 5 bytes, and at most 16 bytes. If
we assume that the mean value is about 9 bytes (i.e. on average the length
of a directory-name is 5 characters), then about 7300 directories can be
stored.
. If you have more than 64K-32 bytes of directory information, ACD will
abort, and saves the ACD-database up to that point.
. ACD without parameters acts just as CD without parameters: show current
directory name.
. ACD is very primitive on wildcards: it only understands the asterisk ('*')
as a wildcard character.
. ACD is DesqView aware. If DesqView is active, then for simple screen
writes, it uses the BIOS and for intensive screenwrites, it uses the
Virtual Screen Buffer of DV. Furthermore, - more important - the pop-up
window correctly pops-down, i.e. the DV-screen is correctly restored.
. The directories will be presented alphabetically sorted, where the drive
order is dependent on how you created the ACD-database. If you
ACD /CREATE DCF
then first the matching files on drive D will be listed, then the ones on
drive C and then on drive F. Note that this is a feature.
. When drives do not exist anymore, for example when the network is not
loaded, the directories of these invalid drives are excluded from the
partial match list.
. Because of its database format, ACD can not store a child directory in the
database if its parent is not there. Some people may regard this as a
feature, others as a limitation. For example, if you do this (with no
`aliases' on MD):
ACD rd C:\Useless /local
ACD md C:\Useless\Junk
ACD will create the directory "Junk", but it will not store the name in the
database. You won't be notified; the reason for this is that I don't like
to be notified all the time.
. Some people hate to lose precious environment space, and that's why you are
allowed to patch ACD.EXE to have your own preferred colors by default,
without setting the "ACD_color" environment variable. However, you are NOT
allowed to redistribute this patched version, but only the original
version.
The easiest way to make the patch is to use PATCH22 from Jurgen A. Doornik
(current version: P22V12.zip), which can also be obtained from the SIMTEL20
archives, and is also free of charge.
By using the following table:
Dark Colors ║
(Foreground & ║ Light Colors
Background) Dec Hex ║ (Foreground) Dec Hex
═══════════╤══════════╬══════════════╤════════
Black │ 0 (01) ║ DarkGray │ 8 (08)
Blue │ 1 (02) ║ LightBlue │ 9 (09)
Green │ 2 (03) ║ LightGreen │ 10 (0A)
Cyan │ 3 (04) ║ LightCyan │ 11 (0B)
Red │ 4 (05) ║ LightRed │ 12 (0C)
Magenta │ 5 (06) ║ LightMagenta │ 13 (0D)
Brown │ 6 (07) ║ Yellow │ 14 (0E)
LightGray │ 7 (08) ║ White │ 15 (0F)
the command
patch22 acd.exe ?\h2A2E2A?\h2A2E2A....?
will patch the default colors of ACD in the colors you prefer: the four
dots must be replaced by the HEX values of the BackGround Color and
ForeGround Color. For example:
patch22 acd.exe ?\h2A2E2A?\h2A2E2A010E?
would give you by default yellow characters on blue background, without
using any environment space.
You can also modify ACD_COL.P22 to suit your needs and call:
patch22 @acd_col.p22
Of course, you can use Norton utilities, or PCTOOLS as well to change the
colors. The searchstring to be used is HEX 2A 2E 2A. The two bytes to be
changed are positioned after this searchstring (00 0F).
. Another patch that is allowed changes the functionality of ACD without
parameters:
patch22 acd.exe +5?\h2A2E2A?*?
which changes the third byte after the searchstring (hex 20).
Now ACD without parameters is equivalent to ACD *, just like NCD.
You can also modify ACD_PAR0.P22 to suit your needs and call:
patch22 @acd_par0.p22
. Another patch that is allowed changes the size of the scrollback history:
patch22 acd.exe +6?\h2A2E2A?\h0?
which changes the fourth byte after the searchstring (hex 14) in 0, which
will yield a history size of 0;
patch22 acd.exe +6?\h2A2E2A?\h20?
which changes the fourth byte after the searchstring in hex 20, which will
yield a history size of 32.
You can also modify ACD_hist.P22 to suit your needs and call:
patch22 @acd_hist.p22
. The next patch makes sure that the ACD.IDX database will not be updated
when ACD encounters an unknown sub-directory with a known parent.
patch22 acd.exe +7?\h2A2E2A?\h00?
which changes the fifth byte after the searchstring (hex 01) in 0.
patch22 acd.exe +7?\h2A2E2A?\h01?
which changes the fifth after the searchstring back in hex 01.
You can also modify ACD_know.P22 to suit your needs and call:
patch22 @acd_know.p22
. The next patch makes sure that by default the drives will not be tested for
their existence: all information will be displayed. The /i option will then
get the opposite meaning.
patch22 acd.exe +8?\h2A2E2A?\h01?
which changes the sixth byte after the searchstring (hex 00) in 01.
patch22 acd.exe +8?\h2A2E2A?\h00?
which changes the sixth after the searchstring back in hex 00.
You can also modify ACD_drv.P22 to suit your needs and call:
patch22 @acd_drv.p22
. ACD returns detailed ERRORLEVEL conditions, which can be useful if ACD is
invoked from batch files. The errorlevels are:
0 : ACD was successful
1 : Escape pressed
2 : No parameters on commandline
3 : Unknown command
4 : Unable to change to directory (directory not found)
5 : ACD-database is full; partial directory-info saved
6 : Unable to create directory
7 : Unable to remove directory
8 : ACD-database is corrupted
9 : Error opening ACD-database
10 : Error reading ACD-database
11 : Error writing ACD-database
12 : ACD_color specification is incorrect
13 : Directory could not be renamed
14 : Directory to be renamed is not a directory
15 : Directories must have equal parent for rename
The resulting error message can be redirected by adding >NUL to the
ACD command.
. For the interested user, here is what ACD does when changing to a
directory:
1. Try to change directly from current directory to the directory
specified. If this directory does not exist, go to step 2.
2. Look for a match of the last part of the directory entry. For
example, if you specify "ACD sou", then all of the following would
match:
c:\compiler\c\sources
d:\database\soup
f:\acd\source
If more than one match found, display the pop-up window. If none
found, go to step 3.
3. At this point, ACD just shrinks the partial string and repeats step
2, until one or more directories are found.
This program is FREE of charge and may be used by anyone who wishes to. So,
also in a commercial/educational environment. However, you are not allowed to
remove the Copyright Statement, or to sell this program, or bundle it with
other (commercial) goods. You may give it to anyone you like, but only in its
original form with the complete documentation.
If you have any (positive/negative) comments or suggestions, I would like to
hear from you.
Furthermore, I will not be held liable for any misfortune that may or may not
happen to you, which may or may not be the result of using or not using this
program. In other words, the usual disclaimer applies here.
Arjen Merckens
Gandhilaan 35
1069 NC Amsterdam
The Netherlands
Internet: AMBASE@RUG.NL
Acknowledgments:
David E. Jenkins (DAVE.JENKINS@OFFICE.WANG.COM) has given me numerous useful
suggestions, like the scrollback history function, and both he and Jurgen A.
Doornik (ECONZ@VAX.OX.AC.UK), author of PATCH22, tested and commented the
Beta-release of ACD version 1.10. Thanks!
Revision History:
version 1.14, Oct 20, 1991
- fixed bug caused by too fast implementation of the /c option:
ACD could not recognize /create.
- added help from the pop-up window.
- /c and /i really toggle: when specified more than once, the toggling
on/off continues. Ideal for making /c the default in an alias.
- fixed small bug concerning HOME-key.
version 1.13, Oct. 15, 1991
- added /c option to use current drive for switching.
- added action of the : key when in pop-up window; all drives are selected.
version 1.12, Oct. 12, 1991
- added /i option to ignore unlogged drives; a patch can make this the
default. Saves (some) time.
- renames directories perfectly under NOVELL (NCD can't; LCD partly).
version 1.11, Oct. 6, 1991
- automatically adds newly unknown subdirectories with known parents; a
patch can disable this automatic function.
- fixed some bugs resulting in a corrupted ACD.IDX.
version 1.10, Oct. 1, 1991
- added \-function to display all subdirectories of partial match selection.
- added scrollback history function; a function to remember and pop-up the
last "historysize" (default: 20) directory-names (cd !).
- hidden directories are now also scanned.
- added ALT-C : center choice.
- added BackTab-function for selecting previous directory with same parent.
version 1.03, Sept. 14, 1991
- added possibility to patch function of calling ACD without parameters.
- if adding information with /[q]add that already exists in the information
database, the redundant information is removed. The replaced/added drive
information are put at the end of the database.
- position the highlight on the current directory if it is included in the
partial match set being displayed (sort of like "you are here").
- when drives do not exist anymore, for example when the network is not
loaded, the directories of these invalid drives are excluded from the
partial match list.
- fixed bugs:
. when removing a directory which had in the ACD database still some
subdirectories, the ACD database would get corrupted.
. when creating a new directory in the root, the ACD database would
get corrupted.
version 1.02, Sept. 7, 1991
- changed REN function to work as in (4)DOS. Example:
ACD ren d:\bin\dos olddos
now renames d:\bin\dos in d:\bin\olddos in stead of giving an error
message. However, if you enter ACD ren d:\bin\dos d:\olddos, you'll still
get an error message and ERRORLEVEL 15 will be set.
- Some minor code changes.
version 1.01, Aug. 8, 1991
- added TAB-function for selecting next directory with same parent.
- some minor bugs fixed:
. in some instances when creating a directory, the sort order was not kept.
. when a subdirectory was created which had the same name as a `sibling' of
the parent, the ACD-database would not be updated.
version 1.0 , Aug. 7, 1991
- first public release.